import Vue from 'vue'; 
import { Indicator, Toast, MessageBox } from 'mint-ui';
import Wx from 'weixin-js-sdk';
import axios from 'axios'; 

Vue.prototype.$indicator = Indicator;
Vue.prototype.$toast = (msg) => { 
	if (msg) {
		Toast({
			message: msg,
			position: 'middle',
			duration: 2000
		});
	}
};
Vue.prototype.$messageBox = MessageBox;

Vue.prototype.$axiosPost = function(url, params) {
	return new Promise(function(resolve, reject) {
		const userInfo = window.localStorage.getItem('userInfo');
		if (!userInfo || userInfo == 'undefined') {
			let hash = window.location.hash.split('#/')[1];
			window.location.href = `/Weixin/Login/index?hash=${hash}`;
		} else {
			axios.post(url, params).then(res => {
				resolve(res);
			}).catch(() => reject());
		}

	});
}
// 根据请求状态变化显示轻提示
/**
 * ajax请求过程中的提示, 此处用了this(组件实例), 不要使用箭头函数（this是在定义的时候指定的）
 * @param  {[bollean]} status [true=> 显示提示， false=> 关闭提示]
 * @param  {[string]} msg     [提示信息]
 * @return {[type]}        [description]
 */ 
Vue.prototype.$prompt = function(msg) {  
	if (!msg) { 
		this.$indicator.open();
	} else {
		this.$indicator.close();
		this.$toast(msg);
	}
};
Vue.prototype.$testCard = function(sId) {
	var aCity={11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古",21:"辽宁",22:"吉林",23:"黑龙江",31:"上海",32:"江苏",33:"浙江",34:"安徽",35:"福建",36:"江西",37:"山东",41:"河南",42:"湖北",43:"湖南",44:"广东",45:"广西",46:"海南",50:"重庆",51:"四川",52:"贵州",53:"云南",54:"西藏",61:"陕西",62:"甘肃",63:"青海",64:"宁夏",65:"新疆",71:"台湾",81:"香港",82:"澳门",91:"国外"};
    var iSum=0 ;
    var info="" ;
    if(!/^\d{17}(\d|x)$/i.test(sId)) return "你输入的身份证长度或格式错误"; 
    sId=sId.replace(/x$/i,"a"); 
    if(aCity[parseInt(sId.substr(0,2))]==null) return "你的身份证地区非法"; 
   	var sBirthday=sId.substr(6,4)+"-"+Number(sId.substr(10,2))+"-"+Number(sId.substr(12,2)); 
    var d=new Date(sBirthday.replace(/-/g,"/")) ;
    if(sBirthday!=(d.getFullYear()+"-"+ (d.getMonth()+1) + "-" + d.getDate()))return "身份证上的出生日期非法"; 
    for(var i = 17;i>=0;i --) iSum += (Math.pow(2,i) % 11) * parseInt(sId.charAt(17 - i),11) ;
    if(iSum%11!=1) return "你输入的身份证号非法"; 
    //aCity[parseInt(sId.substr(0,2))]+","+sBirthday+","+(sId.substr(16,1)%2?"男":"女");//此次还可以判断出输入的身份证号的人性别
    return true;
}


/**
 * 获取本地存储的数据
 * @param  {[string]}  key     				[数据在本地存储数据的键值]
 * @param  {Boolean}   type   				[array => 返回array, json=> 返回json，什么都不传返回字符串]
 * @return {[String || Array || Object]		[本地数据]
 */
Vue.prototype.$getStorage = function(key, type) {  
	var data = window.localStorage.getItem(key);

	if (!type) {
		return data;
	}

	if (type.toUpperCase() === 'ARRAY') {
		return data !== null ? data.split(',') : [];
	}

	if (type.toUpperCase() === 'JSON') {
		return data !== null ? JSON.parse(data) : null;
	}
};

/**
 * 保存本地数据
 * @param {[string]} key  [键值]
 * @param {[type]} data [数据]
 * @param {[]} type [数据的类型]
 */
Vue.prototype.$setStorage = function(key, data, type) {

	if (type && type.toUpperCase() === 'ARRAY') {
		if (data.length <= 0) return window.localStorage.removeItem(key);
		data = data.join(',');
	}

	if (type && type.toUpperCase() === 'JSON') {
		data = JSON.stringify(data);
	}

	window.localStorage.setItem(key, data);
}


Vue.prototype.$getUserInfo = function() {
	return this.$getStorage('userInfo', 'json');
}


// 设置登陆过期时间---四小时
Vue.prototype.setTime = function() {
	let userInfo = window.localStorage.getItem('userInfo');
	if (userInfo && userInfo != 'undefined') {
		var deadTime = +new Date() + 4000 * 60 * 60 * 1000;
		window.localStorage.setItem('deadTime', deadTime);
	}
}


/**
 * 微信端上传头像方法
 */
Vue.prototype.wxUpload = function (wx) {

	// 从相册中选取图片
	var chooseImg = function (ajaxUpload, n) {
		let _self = this;
		let num = n > 1 ? n : 1;
		wx.chooseImage({
			count: num, // 默认9
			sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图，默认二者都有
			sourceType: ['album'], // 可以指定来源是相册还是相机，默认二者都有
			success: function (res) {
				var localIds = res.localIds; // 返回选定照片的本地ID列表，localId可以作为img标签的src属性显示图片
				_self.uploadImg(localIds, ajaxUpload);
			}
		});
	}

	// 拍照上传图片
	var takePhoto = function (ajaxUpload) {
		let _self = this;
		console.log(this,2212);
		wx.chooseImage({
			count: 1, // 默认9
			sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图，默认二者都有
			sourceType: ['camera'], // 可以指定来源是相册还是相机，默认二者都有
			success: function (res) {
				var localIds = res.localIds; // 返回选定照片的本地ID列表，localId可以作为img标签的src属性显示图片
				_self.uploadImg(localIds, ajaxUpload);
			}
		});
	}

	/*
	* 前端调用微信端上传图片接口，获取微信服务器返回的serverId, 提交给后台
	* @params: callback=> ajax上传serverId
	*/
	var uploadImg = function (id, callback) {
		var localId = id.pop();
		wx.uploadImage({
			localId: localId.toString(), // 需要上传的图片的本地ID，由chooseImage接口获得
			isShowProgressTips: 1, // 默认为1，显示进度提示
			success: function (res) {
				var serverId = res.serverId; // 返回图片的服务器端ID
				callback(serverId);
				if(id.length > 0){ //上传多张图片的时候
					uploadImg(id, callback)
				}
			}
		});
	}

	return {
		'chooseImg': chooseImg,
		'takePhoto': takePhoto,
		'uploadImg': uploadImg
	}


}

// 微信分享
Vue.prototype.wxShare = function (myurl, desc, notNeedGetToken) {
	let vm = this;
	let urlname = window.location.href.split('#')[0];
	desc = desc || '旅步人生';

	/**
	 * 获取微信token信息
	 * @return {[type]} [description]
	 */
	function getToken(callback) {
		if (notNeedGetToken) {
			return callback();
		}
		axios.post('/Weixin/Member/getJsapi', {'url': urlname})
			.then(json => {
				if (json.data.code == 1) {
					console.log(json.data.data.appId)
					Wx.config({
						beta:true,
						debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来，若要查看传入的参数，可以在pc端打开，参数信息会通过log打出，仅在pc端时才会打印。
						appId: json.data.data.appId, // 必填，公众号的唯一标识
						timestamp: json.data.data.timestamp, // 必填，生成签名的时间戳
						nonceStr: json.data.data.nonceStr, // 必填，生成签名的随机串
						signature: json.data.data.signature,// 必填，签名，见附录1
						jsApiList: ['onMenuShareTimeline', 'onMenuShareAppMessage', 'onMenuShareQQ', 'onMenuShareWeibo', 'onMenuShareQZone','chooseImage','uploadImage','previewImage','downloadImage','getLocation','openLocation'] // 必填，需要使用的JS接口列表，所有JS接口列表见附录2
					});
					callback();
				} else {
					vm.$toast('分享功能暂不能使用');
					// MessageBox('提示', json.data.msg + '分享功能暂不能使用');
				}
			}, () => {
				vm.$toast('分享功能暂不能使用');
				// MessageBox('提示', '网络异常，获取微信参数失败');
			});
	}

	// 分享内容、标题、链接等配置
	let shareConfig = {
		title: '欢迎关注宜住人生',
		desc: '点击详情查看电子账单，提前申请发票',
		link: 'ez.ihangwei.com/Weixin/Index/index#/my_order',
		imgUrl: 'http://cpark.oss-cn-shanghai.aliyuncs.com/91a371d8bba036e3657420975203e8f4.jpg',
		success: function () { 
		},
		cancel: function () { 
		}
	};	
	// 初始化分享函数调用
	function initShare() {
		Wx.ready(function () {
			// 分享到朋友圈
			Wx.onMenuShareTimeline(shareConfig);

			// 分享给朋友
			Wx.onMenuShareAppMessage(shareConfig);

			// 分享到QQ
			Wx.onMenuShareQQ(shareConfig);

			// 分享到腾讯微博
			Wx.onMenuShareWeibo(shareConfig);

			// 分享到QQ空间
			Wx.onMenuShareQZone(shareConfig);
		});
	}

	getToken(initShare);

};
